package com.sanyue.springboot.controller;

import com.sanyue.springboot.bean.Admin;
import com.sanyue.springboot.bean.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpSession;
import java.util.ArrayList;

/**
 * @author: Guan
 **/
@Controller
@Slf4j
public class AdminController {



    /**
     *  相应用户登入的请求
     *  注意：虽然Mapping注解中的value值相同，但是请求方式不同，springboot可以识别我们要请求的是哪个方法
     * @param admin 自定义对象参数
     * @param session
     * @param model 像request域中注入数据
     * @return
     */
    @PostMapping("login")
    public String login(Admin admin,HttpSession session,Model model){
        //验证用户是否合法
        if(StringUtils.hasText(admin.getName()) && "666".equals(admin.getPassword())){
            /**
             *  如果合法，重定向到ToManage请求
             *  解读：为什么用重定向？
             *    当使用请求转发时，整个业务只有一个请求，如果刷新页面，之前填写的数据可能提交，导致数据不一致或者求他问题。
             *    重定向，在跳转页面时，会新生成一个请求，就不会造成上述问题
             *  注意：
             *   重定向后，浏览器在请求的时候是get请求
             */
            //将用户保存到session域
            session.setAttribute("admin",admin);
            return "redirect:/ToManage";
        }
        //不合法，返回原页面
        model.addAttribute("msg","账号/密码错误");
        return "admin";
    }

//     //处理用户的请求到 manage.html
//     @GetMapping("ToManage")
//     public String toManage(HttpSession session,Model model){
//         //暂时使用session验证，后面统一使用拦截器验证
//         Object admin =  session.getAttribute("admin");
//         if(admin != null){
//             //可以这里集合-模拟用户数据, 放入到request域中，并显示
//             ArrayList<User> users = new ArrayList<>();
//             users.add(new User(1, "关羽~", "666666", 20, "gy@sohu.com"));
//             users.add(new User(2, "张飞", "666666", 30, "zf@sohu.com"));
//             users.add(new User(3, "赵云", "666666", 22, "zy@sohu.com"));
//             users.add(new User(4, "马超", "666666", 28, "mc@sohu.com"));
//             users.add(new User(5, "黄忠", "666666", 50, "hz@sohu.com"));
//             //将数据放入到request域
//             model.addAttribute("users", users);
//             return "manage";
//         }
//         model.addAttribute("msg","请登入");
//         return "admin";
//     }
// }

    //处理用户的请求到 manage.html
    @GetMapping("ToManage")
    public String toManage(HttpSession session,Model model){
        // 使用拦截器验证

        log.info("访问到ToManage方法");
        //可以这里集合-模拟用户数据, 放入到request域中，并显示
        ArrayList<User> users = new ArrayList<>();
        users.add(new User(1, "关羽~", "666666", 20, "gy@sohu.com"));
        users.add(new User(2, "张飞", "666666", 30, "zf@sohu.com"));
        users.add(new User(3, "赵云", "666666", 22, "zy@sohu.com"));
        users.add(new User(4, "马超", "666666", 28, "mc@sohu.com"));
        users.add(new User(5, "黄忠", "666666", 50, "hz@sohu.com"));
        //将数据放入到request域
        model.addAttribute("users", users);
        return "manage";

    }
}